1. Field
The disclosed embodiments generally relate to systems that facilitate collaborative editing of documents. More specifically, the disclosed embodiments relate to techniques for inferring a sequence of editing operations to facilitate merging different versions of a shared document.
2. Related Art
Recently developed document-sharing systems presently make it possible for multiple users working from different locations to concurrently edit the same shared document. Many of these document-sharing systems provide a replicated storage architecture, wherein shared documents are replicated in the local storage of each collaborating site to provide adequate responsiveness through potentially high-latency networks, such as the Internet. However, allowing users to concurrently edit different versions of the same shared document can cause consistency problems among the different document versions.
These consistency problems can be dealt with through techniques such as Operational Transformation (OT). In a typical OT system, editing operations performed on a local version of a shared document are immediately propagated to remote versions of the shared document located at remote sites. Moreover, editing operations received from remote sites are first transformed before being applied to the local version of the document. This transformation makes use of the “operational intent” of the user to determine how concurrent edits from multiple users are applied to the document.
Unfortunately, it is hard to determine the operational intent of a user by merely examining a document. A word-processing system typically updates the document during periodic save operations. However, between two consecutive save operations potentially hundreds of editing operations may have been applied to the document. Moreover, the documents typically do not provide details about the specific sequence of editing operations which occurred between the save operations; only the final result of the sequence of editing operations is visible. This makes it hard to determine the operational intent of the user in order to resolve the above-described consistency problems between different versions of a shared document.